<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" >

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js" integrity="sha256-iM4Yzi/zLj/IshPWMC1IluRxTtRjMqjPGd97TZ9yYpU=" crossorigin="anonymous"></script>
  <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css?family=Cousine|Inconsolata" rel="stylesheet">
  <link rel="shortcut icon" type="image/png" href="/favicon.png">

  <link rel="stylesheet" href="/css/style.css">
  <link rel="stylesheet" href="/css/css/fontawesome-all.min.css">
  <link rel="stylesheet" href="/css/css/work-sans-v7.css">
  <script src="/js/main.js"></script>

  <!-- Begin Jekyll SEO tag v2.6.1 -->
<title>RB: Get Account Comments | Hive Developer</title>
<meta name="generator" content="Jekyll v4.0.0" />
<meta property="og:title" content="RB: Get Account Comments" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Fetching the comments written by a particular account." />
<meta property="og:description" content="Fetching the comments written by a particular account." />
<link rel="canonical" href="get_account_comments.html" />
<meta property="og:url" content="get_account_comments.html" />
<meta property="og:site_name" content="Hive Developer" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2020-08-26T11:52:22-07:00" />
<script type="application/ld+json">
{"description":"Fetching the comments written by a particular account.","mainEntityOfPage":{"@type":"WebPage","@id":"get_account_comments.html"},"@type":"BlogPosting","url":"get_account_comments.html","headline":"RB: Get Account Comments","dateModified":"2020-08-26T11:52:22-07:00","datePublished":"2020-08-26T11:52:22-07:00","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->


  
</head>
<body>
<header>
  <h1>
    <button type="button" class="open-nav" id="open-nav"></button>
    <a href="/"  class="logo-link"><img src="/images/logotype_black.svg" height="40" alt="Hive Developer logo"></a>
  </h1>

  
  <form action="/search/" method="get">
    <input type="text" name="q" id="search-input" placeholder="Search">
    <input type="submit" value="Search" style="display: none;">
  </form>
  

  <div id="sidebar" class="sidebar">
	
	
	
		
    <section class="pnl-main-nav-section main-nav-section" url="/">
		<h6 class="ctrl-nav-section title">Introduction</h6>
		<ul class="cont-nav-section content">
			
				
					
					
						
						<li><a href="/#introduction-welcome">Welcome to Hive</a></li>
						
					
				
			
		</ul>
	</section>
	
		
    <section class="pnl-main-nav-section main-nav-section" url="/quickstart/">
		<h6 class="ctrl-nav-section title">Quickstart</h6>
		<ul class="cont-nav-section content">
			
				
					
					
						
						<li><a href="/quickstart/#quickstart-choose-library">Choose Library</a></li>
						
					
						
						<li><a href="/quickstart/#quickstart-hive-full-nodes">Hive Nodes</a></li>
						
					
						
						<li><a href="/quickstart/#quickstart-testnet">Hive Testnet</a></li>
						
					
				
			
		</ul>
	</section>
	
		
    <section class="pnl-main-nav-section main-nav-section" url="/tutorials/">
		<h6 class="ctrl-nav-section title">Tutorials</h6>
		<ul class="cont-nav-section content">
			
				
					
						<li><a href="/tutorials/#tutorials-javascript">Javascript</a></li>
					
				
					
						<li><a href="/tutorials/#tutorials-python">Python</a></li>
					
				
					
						<li><a href="/tutorials/#tutorials-ruby">Ruby</a></li>
					
				
					
						<li><a href="/tutorials/#tutorials-recipes">Recipes</a></li>
					
				
			
		</ul>
	</section>
	
		
    <section class="pnl-main-nav-section main-nav-section" url="/services/">
		<h6 class="ctrl-nav-section title">Services</h6>
		<ul class="cont-nav-section content">
			
				
					
					
						
						<li><a href="/services/#services-hive-blog">hive.blog</a></li>
						
					
						
						<li><a href="/services/#services-hivesigner">HiveSigner</a></li>
						
					
						
						<li><a href="/services/#services-jussi">Jussi</a></li>
						
					
						
						<li><a href="/services/#services-imagehoster">ImageHoster</a></li>
						
					
						
						<li><a href="/services/#services-dhf">DHF</a></li>
						
					
				
			
		</ul>
	</section>
	
		
    <section class="pnl-main-nav-section main-nav-section" url="/apidefinitions/">
		<h6 class="ctrl-nav-section title">Appbase API</h6>
		<ul class="cont-nav-section content">
			
				
					
					
						
						<li><a href="/apidefinitions/#apidefinitions-condenser-api">Condenser Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-bridge">Bridge</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-account-by-key-api">Account By Key Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-account-history-api">Account History Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-block-api">Block Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-database-api">Database Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-debug-node-api">Debug Node Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-follow-api">Follow Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-jsonrpc">Jsonrpc</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-market-history-api">Market History Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-network-broadcast-api">Network Broadcast Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-rc-api">Rc Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-reputation-api">Reputation Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-rewards-api">Rewards Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-tags-api">Tags Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-transaction-status-api">Transaction Status Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-witness-api">Witness Api</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-broadcast-ops">Broadcast Ops</a></li>
						
					
						
						<li><a href="/apidefinitions/#apidefinitions-broadcast-ops-communities">Broadcast Ops Communities</a></li>
						
					
				
			
		</ul>
	</section>
	
		
    <section class="pnl-main-nav-section main-nav-section" url="/resources/">
		<h6 class="ctrl-nav-section title">Resources</h6>
		<ul class="cont-nav-section content">
			
				
					
					
						
						<li><a href="/resources/#resources-overview">Overview</a></li>
						
					
						
						<li><a href="/resources/#resources-client-libs">Client Libraries</a></li>
						
					
						
						<li><a href="/resources/#resources-bluepaper">Bluepaper</a></li>
						
					
						
						<li><a href="/resources/#resources-whitepaper">Whitepaper</a></li>
						
					
						
						<li><a href="/resources/#resources-tools">Tools</a></li>
						
					
						
						<li><a href="/resources/#resources-hivesigner-libs">Hivesigner Libs</a></li>
						
					
						
						<li><a href="/resources/#resources-hive-keychain">Hive Keychain</a></li>
						
					
						
						<li><a href="/resources/#resources-developeradvocate">Community & Help</a></li>
						
					
				
			
		</ul>
	</section>
	
		
    <section class="pnl-main-nav-section main-nav-section" url="/glossary/">
		<h6 class="ctrl-nav-section title">Glossary</h6>
		<ul class="cont-nav-section content">
			
				
					
					
						
						<li><a href="/glossary/#glossary-chain-basics">Chain Basics</a></li>
						
					
						
					
						
						<li><a href="/glossary/#glossary-governance">Governance</a></li>
						
					
						
						<li><a href="/glossary/#glossary-transactions">Transactions</a></li>
						
					
						
						<li><a href="/glossary/#glossary-api">API</a></li>
						
					
						
						<li><a href="/glossary/#glossary-market">Market</a></li>
						
					
				
			
		</ul>
	</section>
	
</div>



  <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
</header>
<div class="main" id="top">
  <div class="hero">
    <h1 class="hero__h1">Hive Developer Portal </h1>
    <img class="hero__img" src="/images/honey-comb-92.png" style="position: relative; top: 10px;" />
  </div>
  <section id="tutorials-ruby-get-account-comments" class="row tutorials-ruby-get-account-comments">
	<h3>
		<a id="tutorials-ruby-get-account-comments">
			RB: Get Account Comments
			
		</a>
	</h3>
	
		<span class="description"><p>Fetching the comments written by a particular account.</p>
</span>
	

	<p><span class="fa-pull-left top-of-tutorial-repo-link"><span class="first-word">Full</span>, runnable src of <a href="https://gitlab.syncad.com/hive/devportal/-/tree/master/tutorials/ruby/tutorials/09_get_account_comments">Get Account Comments</a> can be downloaded as part of: <a href="https://gitlab.syncad.com/hive/devportal/-/tree/master/tutorials/ruby">tutorials/ruby</a>.</span>
<br /></p>

<p>Historically, applications that wanted to retrieve comments written by a particular account would use <code class="highlighter-rouge">get_state</code>.  But this method has been scheduled for deprecation.  So we’ll use a more supported approach in this tutorial using <code class="highlighter-rouge">get_account_history</code>.</p>

<h3 id="sections">Sections</h3>

<ol>
  <li><a href="#making-the-api-call">Making the api call</a> - Requesting account history
    <ol>
      <li><a href="#example-api-call">Example api call</a> - make the call in code</li>
      <li><a href="#example-api-call-using-script">Example api call using script</a> - using our tutorial script</li>
      <li><a href="#example-output">Example Output</a> - output from a successful call</li>
    </ol>
  </li>
  <li><a href="#comment-fields">Comment Fields</a> - Getting more detail than provided by account history.</li>
  <li><a href="#to-run">To Run</a> - Running the example.</li>
</ol>

<h3 id="making-the-api-call">Making the api call</h3>

<p>To request the latest comments by a particular author, we can use the <code class="highlighter-rouge">get_account_history</code> method:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">api</span> <span class="o">=</span> <span class="no">Radiator</span><span class="o">::</span><span class="no">Api</span><span class="p">.</span><span class="nf">new</span>

<span class="n">api</span><span class="p">.</span><span class="nf">get_account_history</span><span class="p">(</span><span class="n">account_name</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10000</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">history</span><span class="o">|</span>
  <span class="n">history</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">index</span><span class="p">,</span> <span class="n">item</span><span class="o">|</span>
    <span class="n">type</span><span class="p">,</span> <span class="n">op</span> <span class="o">=</span> <span class="n">item</span><span class="p">.</span><span class="nf">op</span>
    
    <span class="k">next</span> <span class="k">unless</span> <span class="n">type</span> <span class="o">==</span> <span class="s1">'comment'</span>
    <span class="k">next</span> <span class="k">if</span> <span class="n">op</span><span class="p">.</span><span class="nf">parent_author</span><span class="p">.</span><span class="nf">empty?</span> <span class="c1"># skip posts</span>
    <span class="k">next</span> <span class="k">if</span> <span class="n">op</span><span class="p">.</span><span class="nf">parent_author</span> <span class="o">==</span> <span class="n">account_name</span> <span class="c1"># skip replies to account</span>

    <span class="c1"># .</span>
    <span class="c1"># ... your code here</span>
    <span class="c1"># .</span>
  <span class="k">end</span>
<span class="k">end</span>
</code></pre></div></div>

<p>Notice, the above example request up to 10,000 operations from history, starting from the oldest.  From these results, we iterate on each item in history to locate <strong>a)</strong> type of <code class="highlighter-rouge">comment</code>, and <strong>b)</strong> <code class="highlighter-rouge">parent_author</code> that do not match the <code class="highlighter-rouge">account_name</code>.</p>

<h4 id="example-api-call">Example api call</h4>

<p>If we want to get the comments by user @lordvader …</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">api</span><span class="p">.</span><span class="nf">get_account_history</span><span class="p">(</span><span class="s2">"lordvader"</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">content</span><span class="o">|</span> <span class="o">...</span>
</code></pre></div></div>

<h4 id="example-api-call-using-script">Example api call using script</h4>

<p>And to do the same with our tutorial script</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ruby get_account_comments.rb lordvader
</code></pre></div></div>

<h4 id="example-output">Example Output</h4>

<p>From the example we get the following output from our script:</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>.
.
.
Reply to @saarliconvalley in discussion: "The Empire has sent you a friend request."
	body_length: 33 (7 words)
	replied at: 2018-03-27T16:02:45
	net_votes: 0
	https://steemit.com/@lordvader/re-saarliconvalley-re-lordvader-2018327t16025594z-20180327t160243538z
Reply to @teenovision in discussion: "The Empire has sent you a friend request."
	body_length: 90 (16 words)
	replied at: 2018-03-27T15:53:39, updated at: 2018-03-30T17:25:18, active at: 2018-03-30T17:25:18
	net_votes: 0
	https://steemit.com/@lordvader/re-teenovision-re-lordvader-the-empire-has-sent-you-a-friend-request-20180327t155339532z
Reply to @gtg in discussion: "gtg witness log"
	body_length: 130 (25 words)
	replied at: 2018-04-06T04:29:00
	net_votes: 2
	https://steemit.com/@lordvader/re-gtg-ffdhu-gtg-witness-log-20180406t042906872z
</code></pre></div></div>

<h3 id="comment-fields">Comment fields</h3>

<p>Comments in the results of <code class="highlighter-rouge">get_account_history</code> will only return the following fields:</p>

<ul>
  <li><code class="highlighter-rouge">parent_author</code></li>
  <li><code class="highlighter-rouge">parent_permlink</code></li>
  <li><code class="highlighter-rouge">author</code></li>
  <li><code class="highlighter-rouge">permlink</code></li>
  <li><code class="highlighter-rouge">title</code></li>
  <li><code class="highlighter-rouge">body</code></li>
  <li><code class="highlighter-rouge">json_metadata</code></li>
</ul>

<p>In our example script, we want more detail than this, so for every <code class="highlighter-rouge">comment</code>, we call <code class="highlighter-rouge">get_content</code> to retrieve more detail.  For a full explanation of the results provided by <code class="highlighter-rouge">get_content</code>, please refer to the tutorial: <a href="https://github.com/steemit/devportal-tutorials-rb/tree/master/tutorials/05_get_post_details">Get Post Details</a></p>

<h3 id="to-run">To Run</h3>

<p>First, set up your workstation using the steps provided in <a href="https://developers.steem.io/tutorials-ruby/getting_started">Getting Started</a>.  Then you can create and execute the script (or clone from this repository):</p>

<ul>
  <li><code class="highlighter-rouge">&lt;account-name&gt;</code></li>
</ul>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone git@github.com:steemit/devportal-tutorials-rb.git
<span class="nb">cd </span>devportal-tutorials-rb/tutorials/09_get_account_comments
bundle <span class="nb">install
</span>ruby get_account_comments.rb &lt;account-name&gt;
</code></pre></div></div>

<hr />

</section>

</div>
<div class="footer">
  <a href="#">Back to top</a>
</div>
<script>
    document.getElementById("open-nav").addEventListener("click", function () {
        document.body.classList.toggle("nav-open");
    });
</script>
</body>
</html>


<script src="/js/adjust.js"></script>

